package com.ctg.payroll2.service.social;

import java.sql.SQLException;
import java.util.List;

import com.ctg.payroll2.bean.filter.social.PbSocialDetailFilter;
import com.ctg.payroll2.bean.filter.social.PbSocialMasterFilter;
import com.ctg.payroll2.bean.po.social.PbSocialDetail;
import com.ctg.payroll2.bean.po.social.PbSocialMaster;
import com.ctg.payroll2.bean.po.social.RecomTemplateSocialItemSearchBean;
import com.ctg.platform.util.Page;

/**
 * 社保项目管理service
 * @author 鲁力 2009-9-1 下午01:35:05
 *
 */
public interface PbSocialItemService {
	/**
	 * 推荐模板中添加社保项目用的查询
	 * @return
	 */
	List<RecomTemplateSocialItemSearchBean> getPbSocialItemByFilter(PbSocialMasterFilter filter);
	/**
	 * 新增社保项目
	 * @param PbSocialMaster Action中传入的社保项目
	 */
	void insertPbSocialMaster(PbSocialMaster pbSocialMaster);
	/**
	 * 更新社保项目
	 * @param PbSocialMaster Action中传入的社保项目
	 */
	void updatePbSocialMaster(PbSocialMaster pbSocialMaster);
	/**
	 * 根据社保项目id删除社保项目
	 * @param id
	 */
	void deletePbSocialMasterById(Long id);
	/**
	 * 根据社保项目id删除社保项目
	 * @param ids
	 */
	void deletePbSocialMasterByIds(String id);
	/**
	 * 根据查询条件查询翻页结果
	 * @param PbSocialMaster 根据PbSocialMaster制作查询条件
	 * @return 翻页结果
	 */
	Page getPbSocialMasterPageByFilter(PbSocialMasterFilter filter);
	/**
	 * 根据主键找到社保项目
	 * @param id
	 */
	PbSocialMaster getPbSocialMasterById(Long id);
	/**
	 * 根据社保名称或者id找到社保项目
	 * @param name 社保项目名称
	 * @return 社保项目
	 */
	PbSocialMaster getPbSocialMasterByName(String name);
	
	
	/**
	 * 新增社保项目子表记录
	 * @param PbSocialDetail Action中传入的社保项目
	 */
	void insertPbSocialDetail(PbSocialDetail pbSocialDetail);
	/**
	 * 更新社保项目子表记录
	 * @param PbSocialDetail Action中传入的项目子表
	 */
	void updatePbSocialDetail(PbSocialDetail pbSocialDetail);
	/**
	 * 根据社保项目子表记录id删除社保项目子表记录
	 * @param id
	 */
	void deletePbSocialDetailById(Long id);
	/**
	 * 根据社保项目子表记录id删除社保项目子表记录
	 * @param id
	 */
	void deletePbSocialDetailByIds(String id);
	/**
	 * 根据查询条件查询翻页结果
	 * @param PbSocialDetail 根据PbSocialDetail制作查询条件
	 * @return 翻页结果
	 */
	Page getPbSocialDetailPageByFilter(PbSocialDetailFilter filter);
	/**
	 * 根据主键找到社保项目子表记录
	 * @param id
	 */
	PbSocialDetail getPbSocialDetailById(Long id);
	/**
	 * 主表和子表一起插入数据库
	 * @param pbSocialMaster 主表记录
	 * @param detailList 子表记录
	 */
	void insertMasterAndDetail(PbSocialMaster pbSocialMaster, List<PbSocialDetail> detailList);
	/**
	 * 主表和子表一起插入数据库
	 * @param pbSocialMaster 主表记录
	 */
	void insertMasterAndDetail(PbSocialMaster pbSocialMaster);
	/**
	 * 主表和子表一起查出来
	 * @param masterId 主表主键
	 * @return
	 */
	PbSocialMaster getMasterAndDetailByMasterId(Long masterId);
	/**
	 * 更新社保项目（策略：先删除再新增）
	 * @param pbSocialMaster
	 */
	void fakeUpdateMasterAndDetail(PbSocialMaster pbSocialMaster);
	/**
	 * 根据公司找到该公司的社保项目
	 * @param CompanyCode
	 * @return
	 */
	List<RecomTemplateSocialItemSearchBean> getSocialItemByCompanCode(String CompanyCode) throws SQLException;
	List<RecomTemplateSocialItemSearchBean> getSocialItemByEmps(String companyCode, String empIds) throws SQLException;
}
